home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 June / MacFormat 25.iso / Shareware City / Developers / Little Smalltalk v3.1.4 / Smalltalk Source / macfile.st < prev    next >
Encoding:
Text File  |  1994-10-13  |  2.3 KB  |  114 lines  |  [TEXT/KAHL]

  1. * ****
  2. * Little Smalltalk, version 3
  3. * Written by Tim Budd, Oregon State University, January 1989
  4. *
  5. * This file: (c) October 1994, Julian Barkway. All rights reserved.
  6. *
  7. *   Overridden methods from 'file.st'. Most just slightly modified to deal
  8. *   with file types.
  9. *
  10. * In order to allow the use of hierarchical directories, the file name has
  11. * been expanded to allow a full pathname to be specified. For now, though,
  12. * only access to the default volume is supported.
  13. *
  14. * I have also added the notion of Mac file types. Two types are currently
  15. * supported:
  16. *
  17. *        1: Text (including saved workspaces)
  18. *        2: System Image
  19. *
  20. * On other systems, these could be implemented by means of standardised file
  21. * name extensions.
  22. *
  23. * JRB, 5/94.
  24. *
  25. * v3.1.0    -
  26. * v3.1.1    -
  27. * v3.1.2    Changed methods removed from file.st for greater compatibility.
  28. *
  29. * ****
  30. Methods File 'all'
  31.     number
  32.     "Return number allocated to this file"
  33.         ^ number
  34. |
  35.     open: m
  36.         self mode: m.
  37.         self open
  38. |
  39.     open: m withType: t
  40.         self mode: m.
  41.         self fType: t.
  42.         self open
  43. |
  44.     mode: m
  45.         mode <- m
  46. |
  47.     fType: t
  48.         fType <- t
  49. |
  50.     open
  51.         (name isNil) ifFalse: [
  52.             number notNil ifTrue: [ self close ].
  53.             self getNumber.
  54.             (<120 number name mode fType> isNil)
  55.             ifTrue: [ smalltalk error:
  56.                 'open failed: ', name. ^ false].
  57.             ^ true
  58.         ]
  59. |
  60.     close
  61.         " close file, take entry out of global variable "
  62.         number isNil ifTrue: [ ^ nil ].
  63.         files at: number put: nil.
  64.         <121 number name>.
  65.         number <- nil.
  66. |
  67.     saveImage
  68.         " subtle problem - when we read in image don't want
  69.           image file to be open for writing, so we remove it's
  70.           number from files array temporarily "
  71.         (name isNil)            "2 lines added JRB, 5/94"
  72.         ifFalse: [
  73.             (number notNil)
  74.                 ifTrue: [ files at: number put: nil. 
  75.                       <127 number>.
  76.                       files at: number put: self]
  77.                 ifFalse: [smalltalk error: 'saveImage: file not open'
  78.             ]
  79.         ]
  80. ]
  81. Methods File 'all'
  82.     delete
  83.         ^ <124 number name>
  84. ]
  85.  
  86. Methods Smalltalk 'image'
  87.     saveImage: name
  88.         (name isNil)
  89.         ifFalse: [
  90.             scheduler critical: [
  91.                 " first get rid of our own process "
  92.                 scheduler removeProcess: scheduler currentProcess.
  93.                 File new;
  94.                     name: name;
  95.                     open: 'wb' withType: 2;
  96.                     saveImage;
  97.                     close
  98.             ]
  99.         ]
  100. ]
  101.  
  102. Methods Class 'all'
  103.     fileOut        | f |
  104.         " file out whole class on class.st "
  105.         f <- File new; 
  106.              name: (name asString,'.st'); 
  107.              mode: 'w'; 
  108.              fType: 1; 
  109.              open.
  110.         self fileOutOn: f.
  111.         f close.
  112. ]
  113.  
  114.